/**
 * 
 */
package de.uni_postdam.ling.tcl.smc_lda;

import de.uni_postdam.ling.tcl.util.SynchronizedStringInterner;

/**
 * @author christoph
 *
 */
public interface DocumentSource
{
	/**
	 * if there are no more documents then return null
	 * @param offSet
	 * @return
	 */
	public long[] getDocument(int offSet);
	
	/**
	 * 
	 * @param blockSize
	 */
	public void removeBlock(int numberOfEntries);
	
	/**
	 * 
	 * @return
	 */
	public boolean hasMoreData();
	
	/**
	 * 
	 * @param numbers
	 */
	public void ensureLookAheadSize(int... numbers);
	
	/**
	 * 
	 * @return
	 */
	public SynchronizedStringInterner getInterner();
	
	/**
	 * 
	 */
	public void shutDown();
}
